import xlrd
import xlwt
import pandas as pd

def CreateList(filename, sheet_index=0, table_header_row=0):
    '''
    将ID_seq_score_a.xlsx中的数据转换为嵌套字典的列表
    :param filename: 文件名
    :param sheet_index: 表格号，默认为0
    :param table_header_row: 第一行的行号，默认为0
    :return: 返回生成的列表
    '''
    # 打开excel文件读取数据
    data = xlrd.open_workbook(filename)
    table = data.sheet_by_index(sheet_index)
    nrows = table.nrows
    nclos = table.ncols

    # 获取表头行的信息，为一个列表
    header_row_data = table.row_values(table_header_row)
    # 将每行的信息放入一个字典，再将字典放入一个列表中
    list = []
    for rownum in range(1, nrows):
        rowdata = table.row_values(rownum)
        # 如果rowdata有值，
        if rowdata:
            dict = {}
            for j in range(0, len(header_row_data)):
                # 将excel中的数据分别设置成键值对的形式
                dict[header_row_data[j]] = rowdata[j]
            list.append(dict)
    return list

def TiterProc(Titer):
    for TiterItem in Titer:
        TiterItem['TIS-position'] = TiterItem['TranscriptID'][12:15]
        Evaluate = TiterItem['TranscriptID'][-1]
        if Evaluate == 'Y':
            TiterItem['Evaluate'] = 0
        else:
            TiterItem['Evaluate'] = 1

def ExpExcel(Titer):
    pf = pd.DataFrame(Titer)
    order = {'TranscriptID', 'TIS-position', 'TIS-score', 'Titer-max-position',
             'Titer-max-score', 'Evaluate'}
    pf = pf[order]
    # 指定生成的Excel表格名称
    file_path = pd.ExcelWriter('D:\\test_new.xlsx')
    # 替换空单元格
    pf.fillna(' ', inplace=True)
    # 输出
    pf.to_excel(file_path, encoding='utf-8', index=False)
    # 保存表格
    file_path.save()

#Titer = CreateList('D:\\test_titer.xlsx')
#TiterProc(Titer)
#ExpExcel(Titer)
#List = CreateList('D:\\test_res.xlsx')

Titer = CreateList('D:\\Titer-arabidopsis.xlsx')
List = CreateList('D:\\result.xlsx')

for ListItem in List:
    for TiterItem in Titer:
        if ListItem['ID'] in TiterItem['TranscriptID']:
            print("working!")
            TiterItem['Titer-max-position'] = ListItem['TIS-MAX-location']
            TiterItem['Titer-max-score'] = ListItem['TIS-MAX-score']

ExpExcel(Titer)